<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Usuarios extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('Usuarios_model');
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->library('email');
    }

    function index() {
        $this->logeo();
    }

    function logeo() {
        $data['titulo'] = 'Acceso a TrackStar';
        $data['contenido_principal'] = 'usuarios/logeo';
        $this->load->view('includes/plantilla_logeo', $data);
    }
    
    function registro() {
        $data['titulo'] = 'Crear nueva cuenta';
        $data['contenido_principal'] = 'usuarios/registro';
        $this->load->view('includes/plantilla_logeo', $data);
    }

    function recuperar_password() {
        
    }

    function crear_cuenta() {
        //Definimos reglas de validaciones
        //set_rules('nombre del campo', 'texto a mostrar', 'condiciones')
        $this->form_validation->set_rules('nombre', 'Nombre', 'trim|required');
        $this->form_validation->set_rules('nombre_usuario', 'Usuario', 'trim|required|callback__verificar_usuario');
        $this->form_validation->set_rules('email', 'E-mail', 'trim|required|valid_email|callback__verificar_email');
        $this->form_validation->set_rules('password', 'Contraseña', 'trim|required|md5');
        $this->form_validation->set_rules('re_password', 'Repetir Contraseña', 'trim|required|matches[password]|md5');
        //Mensajes de error de las validaciones  %s toma el valor del control del cual se produjo error
        $this->form_validation->set_message('required', 'El campo %s es obligatorio');
        //$this->form_validation->set_message('required', 'El campo %s no es válido');
        $this->form_validation->set_message('_verificar_usuario', 'El campo %s ya existe');
        $this->form_validation->set_message('_verificar_email', 'El campo %s ya existe');
        $this->form_validation->set_message('matches', 'Las contraseñas no coinciden');
        $this->form_validation->set_message('valid_email', 'Ingrese un mail valido');

        if ($this->form_validation->run() == FALSE) {
            $this->registro();
        } else {
            //captura los datos via post
            $nombre = $this->input->post('nombre');
            $nombre_usuario = $this->input->post('nombre_usuario');
            $email = $this->input->post('email');
            $password = $this->input->post('password');
            $codigo_activacion = $this->_cadena_aleatoria(15);
            //envio de email
            $this->email->from('snitsugas@hotmail.com', 'Administrador TrackStar');
            $this->email->to($email);
            $this->email->subject('Verificacion de Registro TrackStar');
            $this->email->message('Por favor verifique su registro haciendo click en el siguiente enlace' . anchor(base_url() . 'usuarios/confirmar_registro/' . $codigo_activacion, 'Haga click en el enlace'));
            if (!$this->email->send())
            {
                echo $this->email->print_debugger();  
            }else{
                //envio a la bd
                $this->Usuarios_model->insertar($nombre, $nombre_usuario, $email, $password, $codigo_activacion);
                echo 'Se registro correctamente';
            }
        }
    }

    function _verificar_usuario($nombre) {
        return $this->Usuarios_model->verificar_usuario($nombre);
    }

    function _verificar_email($email) {
        return $this->Usuarios_model->verificar_email($email);
    }

    function _cadena_aleatoria($tamaño) {
        $caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        $max = strlen($caracteres) - 1;
        $codigo_activacion = '';
        while (strlen($codigo_activacion) < $tamaño) {
            $codigo_activacion .= $caracteres{mt_rand(0, $max)};
        }
        return $codigo_activacion;
    }

    function confirmar_registro($codigo_activacion = '') {
        if ($codigo_activacion == '') {
            die('Codigo de verificacion errado');
        } else {
            $actualizar = $this->Usuarios_model->confirmar_registro($codigo_activacion);
            if ($actualizar) {
                echo 'Registro completo';
            } else {
                echo 'La verificacion de su registro fallo, intente de nuevo';
            }
        }
    }

//    function _esta_logeado() {
//        $esta_logeado = $this->session->userdata('esta_logeado');
//        if (!isset($esta_logeado) || $esta_logeado != TRUE) {
//            $this->logeo();
//        } else {
//            $this->panel_control();
//        }
//    }
}

?>
